package xcmg.device.dao.mapper.materialsSchedule;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import xcmg.device.dao.entity.materialsSchedule.MaterialsScheduleDO;
import xcmg.device.service.vo.materialsSchedule.MaterialsScheduleVO;

import java.util.List;
@Mapper
public interface MaterialsScheduleMapper {

    int delete(@Param("id") String id);

    int add(MaterialsScheduleDO record);

    int update(MaterialsScheduleDO record);
    //编辑时的更新，专门使用，涉及到审核相关信息如果传null则置空，而不是传null时不处理
    int update4Edit(MaterialsScheduleDO record);

    //批量删除
    int remove(@Param("ids") List<String> ids);

    MaterialsScheduleDO item(String id);

    MaterialsScheduleDO findByBillNo(@Param("billNo")String billNo,@Param("orgId")String orgId);

    List<MaterialsScheduleDO> list(MaterialsScheduleVO model);

    int updateInStatus(@Param("status") int status,@Param("billNo") String billNo);
    int updateOutStatus(@Param("status") int status,@Param("billNo") String billNo);

    /**
     * 获取该公司所有可以过账的领料单（领出）
     *
     * @param orgId
     * @return
     */
    List<MaterialsScheduleDO> listOut4SapPosting(@Param("orgId")String orgId);

    /**
     * 获取该公司所有可以过账的领料单（领入）
     *
     * @param orgId
     * @return
     */
    List<MaterialsScheduleDO> listIn4SapPosting(@Param("orgId")String orgId);

    /**
     * 根据crm单号获取领料单信息
     * @param crmOrder
     * @return
     */
    List<MaterialsScheduleDO> findByCrmOrder(String crmOrder);

    //更新领料单主表的过账状态
    int updatePostStatus(@Param("id") String id,@Param("postInStatus") Integer postInStatus,@Param("postOutStatus") Integer postOutStatus,@Param("postStatus") Integer postStatus);
    //根据id集合查询过账状态/
    List<MaterialsScheduleDO> selectAuditStatusByIds(@Param("ids") List<String> ids);
    //更新单据的审核信息
    int updateAuditState(@Param("ids") List<String> ids, @Param("auditStatus") Integer auditStatus,
                         @Param("auditOpinion") String auditOpinion, @Param("userId") String userId,
                         @Param("userName") String userName);

    Integer countAuditData(@Param("orgId") String orgId);
}